package com.system.vote.admin.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired;

@Aspect
@Component
public class RateLimitingAspect {
    @Autowired
    private RateLimiterUtil rateLimiterUtil;

    @Around("execution(* com.system.vote.admin.controller..*(..))") // 这里替换为你的包名和要限流的方法名
    public Object rateLimiting(ProceedingJoinPoint joinPoint) throws Throwable {
        if (rateLimiterUtil.isAllowed()) { // 检查是否允许通过限流器检查，如果允许则继续执行方法，否则抛出异常或返回错误响应（根据需求自定义）
            return joinPoint.proceed(); // 执行方法
        } else {
            throw new RuntimeException("Rate limit exceeded."); // 抛出异常或返回错误响应（根据需求自定义）
        }
    }
}